From f923f3a5f1fc39e4574587cf9afca4328e75be3a Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Mon, 13 Nov 2006 14:20:26 +0000 Subject: [PATCH] [HVM][IA64] Due to IPF Guest Firmware will enumerate PCI, shutdown in IPF doesn't work This patch makes shutdown work for IPF. Signed-off-by, Anthony Xu --- tools/ioemu/hw/piix4acpi.c | 12 ++++++++++-- xen/include/public/hvm/ioreq.h | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/ioemu/hw/piix4acpi.c b/tools/ioemu/hw/piix4acpi.c index 7b75d01c64..c06059e498 100644 --- a/tools/ioemu/hw/piix4acpi.c +++ b/tools/ioemu/hw/piix4acpi.c @@ -398,8 +398,16 @@ void pci_piix4_acpi_init(PCIBus *bus, int devfn) pci_conf[0x0e] = 0x00; pci_conf[0x3d] = 0x01; /* Hardwired to PIRQA is used */ - pci_register_io_region((PCIDevice *)d, 4, 0x10, - PCI_ADDRESS_SPACE_IO, acpi_map); + /* PMBA POWER MANAGEMENT BASE ADDRESS, hardcoded to 0x1f40 + * to make shutdown work for IPF, due to IPF Guest Firmware + * will enumerate pci devices. + * + * TODO: if Guest Firmware or Guest OS will change this PMBA, + * More logic will be added. + */ + pci_conf[0x40] = 0x41; + pci_conf[0x41] = 0x1f; + acpi_map(d, 0, 0x1f40, 0x10, PCI_ADDRESS_SPACE_IO); acpi_reset(d); } diff --git a/xen/include/public/hvm/ioreq.h b/xen/include/public/hvm/ioreq.h index 32aafa2534..0d3dc3277a 100644 --- a/xen/include/public/hvm/ioreq.h +++ b/xen/include/public/hvm/ioreq.h @@ -80,7 +80,7 @@ struct buffered_iopage { }; /* sizeof this structure must be in one page */ typedef struct buffered_iopage buffered_iopage_t; -#define ACPI_PM1A_EVT_BLK_ADDRESS 0x000000000000c010 +#define ACPI_PM1A_EVT_BLK_ADDRESS 0x0000000000001f40 #define ACPI_PM1A_CNT_BLK_ADDRESS (ACPI_PM1A_EVT_BLK_ADDRESS + 0x04) #define ACPI_PM_TMR_BLK_ADDRESS (ACPI_PM1A_EVT_BLK_ADDRESS + 0x08) -- 2.30.2